import request from '@/utils/request'

/**
 * 查询角色列表
 * @param {Object} query - 查询参数对象
 * @returns {Promise} 返回角色列表数据的Promise对象
 */
export function listRole(query) {
  return request({
    url: '/system/role/list',
    method: 'get',
    params: query
  })
}

/**
 * 查询角色详细信息
 * @param {number|string} roleId - 角色ID
 * @returns {Promise} 返回指定角色详细信息的Promise对象
 */
export function getRole(roleId) {
  return request({
    url: '/system/role/' + roleId,
    method: 'get'
  })
}

/**
 * 新增角色
 * @param {Object} data - 角色数据对象
 * @returns {Promise} 返回新增结果的Promise对象
 */
export function addRole(data) {
  return request({
    url: '/system/role',
    method: 'post',
    data: data
  })
}

/**
 * 修改角色信息
 * @param {Object} data - 包含更新信息的角色数据对象
 * @returns {Promise} 返回修改结果的Promise对象
 */
export function updateRole(data) {
  return request({
    url: '/system/role',
    method: 'put',
    data: data
  })
}

/**
 * 更新角色的数据权限范围
 * @param {Object} data - 数据权限配置对象
 * @returns {Promise} 返回设置结果的Promise对象
 */
export function dataScope(data) {
  return request({
    url: '/system/role/dataScope',
    method: 'put',
    data: data
  })
}

/**
 * 修改角色状态（启用/禁用）
 * @param {number|string} roleId - 要更改状态的角色ID
 * @param {string|number} status - 目标状态值
 * @returns {Promise} 返回状态变更结果的Promise对象
 */
export function changeRoleStatus(roleId, status) {
  const data = {
    roleId,
    status
  }
  return request({
    url: '/system/role/changeStatus',
    method: 'put',
    data: data
  })
}

/**
 * 删除指定角色
 * @param {number|string} roleId - 要删除的角色ID
 * @returns {Promise} 返回删除结果的Promise对象
 */
export function delRole(roleId) {
  return request({
    url: '/system/role/' + roleId,
    method: 'delete'
  })
}

/**
 * 查询已分配给该角色的用户列表
 * @param {Object} query - 查询条件参数对象
 * @returns {Promise} 返回已授权用户列表的Promise对象
 */
export function allocatedUserList(query) {
  return request({
    url: '/system/role/authUser/allocatedList',
    method: 'get',
    params: query
  })
}

/**
 * 查询尚未分配给该角色的用户列表
 * @param {Object} query - 查询条件参数对象
 * @returns {Promise} 返回未授权用户列表的Promise对象
 */
export function unallocatedUserList(query) {
  return request({
    url: '/system/role/authUser/unallocatedList',
    method: 'get',
    params: query
  })
}

/**
 * 取消单个用户的某个角色授权
 * @param {Object} data - 包含用户与角色关系信息的对象
 * @returns {Promise} 返回操作结果的Promise对象
 */
export function authUserCancel(data) {
  return request({
    url: '/system/role/authUser/cancel',
    method: 'put',
    data: data
  })
}

/**
 * 批量取消多个用户的某个角色授权
 * @param {Object} data - 包含要批量处理的用户ID数组等信息
 * @returns {Promise} 返回批量操作结果的Promise对象
 */
export function authUserCancelAll(data) {
  return request({
    url: '/system/role/authUser/cancelAll',
    method: 'put',
    params: data
  })
}

/**
 * 给多个用户授予特定角色权限
 * @param {Object} data - 包含待授权用户的信息
 * @returns {Promise} 返回授权操作结果的Promise对象
 */
export function authUserSelectAll(data) {
  return request({
    url: '/system/role/authUser/selectAll',
    method: 'put',
    params: data
  })
}

/**
 * 根据角色ID获取其对应的部门树结构
 * @param {number|string} roleId - 指定角色的ID
 * @returns {Promise} 返回部门树结构数据的Promise对象
 */
export function deptTreeSelect(roleId) {
  return request({
    url: '/system/role/deptTree/' + roleId,
    method: 'get'
  })
}
